#include "row.h"

void initRow(row *l) {
  *l = NULL;
}



/*=============inserção dos valores===================*/
void insertRow(row *l, char *string) {
  row n = (row) malloc(sizeof (struct Camp));
  char* str = (char*) malloc(strlen(string) * sizeof (char) + 1);
  strcpy(str, string);
  (*n).valor = str;

  if (*l) {
    (*n).prox = (**l).prox;
    (**l).prox = n;

  } else
    (*n).prox = n;
  *l = n;
}



/*=================retirada dos valores===============*/
char* removeRow(row *l) {
  row aux;
  char* temp;

  if (*l == (**l).prox) {
    aux = *l;
    temp = (char*) malloc(strlen(aux->valor)*sizeof(char)+1);
    strcpy(temp,aux->valor);
//     free(aux);
    *l = NULL;
  } else {
    aux = (**l).prox;
    (**l).prox = (*aux).prox;
    temp = (char*) malloc(strlen(aux->valor)*sizeof(char)+1);
    strcpy(temp,aux->valor);
//     free(aux);
    
  }
   
  return temp;
}


/*==============impressão dos valores=====================*/
void printRow(row l) {
  row aux;
  aux = l->prox;

  printf("Fila: [");
  printf("%s ", (aux)->valor);

  while ((aux)->prox != l->prox) {
    aux = (aux)->prox;
    printf(",%s  ", (aux)->valor);
  }
  printf("]\n");
}

// /*====================================================*/
// main() {
//   row f;
//   int opcao;
//   initRow(&f);
// 
//   printf("1: Inserir\t2: Remover\t3: Mostrar\t4: Loop\t0: Sair\nOpção: ");
//   scanf("%d", &opcao);
// 
//   while (opcao) {
//     switch (opcao) {
//       case 1:
//       {
//         char s[20];
//         printf("Valor: ");
//         scanf( "%s", s);
//         printf("inserindo %s\n",s);
//         insertRow(&f, s);
//         break;
//       }
//       case 2:
//         if (f)
//           printf("removendo %s \n",removeRow(&f));
//         else
//           printf("Fila vazia!\n");
//         break;
//       case 3:
//         if (f)
//           printRow(*f);
//         else
//           printf("Fila vazia!\n");
//         break;
//       case 4:{
//         if(f){
// //           char s[20];
// // //           strcpy(s,removeRow(&f));
// //         insertRow(&f,s);
//         puts(loopRow(&f));
//         }
//       }break;
//         
//       default:
//         printf("Opção inválida!\n");
//     }
//     printf("Opção: ");
//     scanf("%d", &opcao);
//   }
// }
/*gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3*/